package com.shujia.wyh.day10;

/*
        static关键字使用的注意事项：
            1、由于被静态修饰的成员是随着类的加载而加载的，所以是优先于对象而存在的。
               所以被静态修饰的东西里面是没有this关键字的
            2、访问的注意事项：
                非静态的方法访问的内容：
                        成员变量：既可以访问静态的成员变量也可以访问非静态的成员变量
                        成员方法：既可以访问静态的成员方法也可以访问非静态的成员方法
                静态的方法访问的内容：
                        成员变量：只能访问静态的成员变量，不能访问非静态的成员变量
                        成员方法:只能访问静态的成员方法，不能访问非静态的成员方法

                就简单记住一句话：静态的只能访问静态的。
 */

class Teacher{
    //非静态的成员变量
    int num = 30;
    //静态的成员变量
    static int num2 = 40;

    public static void show(){
//        System.out.println(this.num);
//        System.out.println(num);
//        System.out.println("这是静态的show()方法");

        //尝试访问非静态的成员变量
        //java: 无法从静态上下文中引用非静态 变量 num
//        System.out.println(num);
        System.out.println(num2);
//        fun2(); //java: 无法从静态上下文中引用非静态 方法 fun2()
        fun3();
    }

    public void fun2(){
        System.out.println("这是非静态的fun2()方法");
    }
    public static void fun3(){
        System.out.println("这是静态的方法fun3()");
    }

    public void fun(){
        //访问非静态的成员变量
        System.out.println(num);
        //访问静态的成员变量
        System.out.println(num2);

        //非静态的方法访问静态的方法
        show();
        fun2();


    }
}

public class TeacherDemo {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
//        teacher.fun();
        Teacher.show();
    }
}
